package com.linkai.ai.tools;

import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
import com.linkai.ai.entity.po.Course;
import com.linkai.ai.entity.po.CourseReservation;
import com.linkai.ai.entity.po.School;
import com.linkai.ai.entity.query.CourseQuery;
import com.linkai.ai.service.ICourseReservationService;
import com.linkai.ai.service.ICourseService;
import com.linkai.ai.service.ISchoolService;
import lombok.RequiredArgsConstructor;
import org.springframework.ai.tool.annotation.Tool;
import org.springframework.ai.tool.annotation.ToolParam;
import org.springframework.stereotype.Component;

import java.util.List;

@RequiredArgsConstructor
@Component
public class CourseTools {

    private final ICourseService courseService;
    private final ISchoolService schoolService;
    private final ICourseReservationService reservationService;

    @Tool(description = "根据条件查询课程")
    public List<Course> queryCourse(@ToolParam(description = "查询的条件",required = false) CourseQuery query){
        if (query == null){
            return courseService.list ();
        }
        QueryChainWrapper<Course> wrapper = courseService.query ()
                .eq (query.getType () != null, "type", query.getType ()) //type = '编程'
                .le (query.getEdu () != null, "edu", query.getEdu ());//edu <= 2
        if(query.getSorts () != null && !query.getSorts ().isEmpty ()){
            for (CourseQuery.Sort sort : query.getSorts ()){
                wrapper.orderBy (true,sort.getAsc (), sort.getField ());
            }
        }
        return wrapper.list ();
    }

    @Tool(description = "查询所有校区")
    public List<School> querySchool(){
        return schoolService.list ();
    }

    @Tool(description = "生成预约单，返回预约单")
    public Integer createCourseReservation(
            @ToolParam(description = "预约课程") String course,
            @ToolParam(description = "预约校区") String school,
            @ToolParam(description = "学生姓名") String studentName,
            @ToolParam(description = "联系电话") String contactInfo,
            @ToolParam(description = "备注",required = false) String remark){
        CourseReservation reservation = new CourseReservation ();
        reservation.setCourse (course);
        reservation.setSchool (school);
        reservation.setStudentName (studentName);
        reservation.setContactInfo (contactInfo);
        reservation.setRemark (remark);
        reservationService.save (reservation);

        return reservation.getId ();
    }
}
